package cn.com.cifi.mars.mapper.mars;

import cn.com.cifi.mars.bean.bo.PriceValueCastDecisionAllOrgEXTBO;
import cn.com.cifi.mars.bean.bo.PriceValueCastDecisionEXTBO;
import cn.com.cifi.mars.bean.vo.price.PriceNewestVersion;
import cn.com.cifi.mars.entity.PriceValueOrg;
import cn.com.cifi.mars.entity.PriceVersion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface PriceValueOrgMapper extends BaseMapper<PriceValueOrg> {

    int deleteByPrimaryKey(String id);

    int insertRecord(PriceValueOrg record);

    int insertSelective(PriceValueOrg record);

    PriceValueOrg selectByPrimaryKey(String id);

    int updateByPrimaryKeySelective(PriceValueOrg record);

    int updateByPrimaryKey(PriceValueOrg record);

    void insertBatch(@Param("list") List<PriceValueOrg> list);

    void deleteOrgBatch(@Param("list") List<String> deleteOrgs, @Param("isDel") int isDel);

    /**
     * @param versionId 版本id
     * @param isDel 是否删除
     * @return PriceVersion
     */
    PriceVersion selectNotDelById(@Param("id") String versionId, @Param("isDel") int isDel);

    /***
     * @param projectFid 分期id
     * @param isDel 是否删除
     * @return PriceNewestVersion
     */
    PriceNewestVersion priceNewestVersion(@Param("fid") String projectFid, @Param("isDel") int isDel);

    /**
     * @param versionId 版本id
     * @param type 类型
     * @param areaPartType 面积段类型
     * @param isDel 是否删除
     * @return List<PriceValueOrg>
     */
    List<PriceValueOrg> selectBuildByVersionId(@Param("versionId") String versionId, @Param("type") String type, @Param("areaPartType") String areaPartType, @Param("isDel") int isDel);

    /**
     * 全盘货值概览-根据price_version表id查询对应的数据
     * @param id 版本id
     * @return PriceValueOrg
     */
    PriceValueOrg selectDataById(@Param("id")String id);

    /**
     * @param versionId 版本id
     * @param type 类型
     * @param isDel 是否删除
     * @return List<PriceValueCastDecisionEXTBO>
     */
    List<PriceValueCastDecisionEXTBO> selectProductByVersionId(@Param("versionId") String versionId, @Param("type") String type, @Param("isDel") int isDel);

    /**
     * @param versionId 版本id
     * @param type 类型
     * @param isDel 是否删除
     * @return List<PriceValueCastDecisionEXTBO>
     */
    List<PriceValueCastDecisionEXTBO> selectBatchByVersionId(@Param("versionId") String versionId, @Param("type") String type, @Param("isDel") int isDel);

    /**
     * @param oldVersionId 版本id
     * @param isDel 是否删除
     * @return List<PriceValueCastDecisionAllOrgEXTBO>
     */
    List<PriceValueCastDecisionAllOrgEXTBO> selectCastDecisionAllOrg(@Param("versionId") String oldVersionId, @Param("isDel") int isDel);

    /**
     * 根据versionId和层级类型查询t_price_value_org中的货值
     * @param versionId 版本id
     * @param type  类型
     * @return PriceValueOrg
     */
    PriceValueOrg selectValueOrgById(@Param("versionId") String versionId,@Param("type") String type);

    /**
     * @param versionId 版本id
     * @param isDel 是否删除
     * @return List<PriceValueCastDecisionAllOrgEXTBO>
     */
    List<PriceValueCastDecisionAllOrgEXTBO> selectWPProductOrgByVersionId(@Param("versionId") String versionId, @Param("isDel") int isDel);

    /**
     * @param versionId 版本id
     * @param isDel 是否删除
     * @return List<PriceValueCastDecisionAllOrgEXTBO>
     */
    List<PriceValueCastDecisionAllOrgEXTBO> selectWPBuildOrgByVersionId(@Param("versionId") String versionId, @Param("isDel") int isDel);

    /**
     * 批量修改
     * @param productList
     */
    void updateBatch(@Param("list") List<PriceValueOrg> productList);

    /**
     * @param versionId 版本id
     * @param isDel 是否删除
     * @return List<PriceValueCastDecisionAllOrgEXTBO>
     */
    List<PriceValueCastDecisionAllOrgEXTBO> selectHouseAndPark(@Param("versionId") String versionId,@Param("isDel") int isDel);

    /**
     * 逻辑删除指定版本面积段层级信息
     * @param versionId 货值版本id
     */
    void deleteHouseAndParkingByVersionId(@Param("versionId") String versionId);

    /**
     *
     * @param versionId 版本id
     * @param type 类型
     * @param isDel  是否删除
     * @return List<PriceValueCastDecisionEXTBO>
     */
    List<PriceValueCastDecisionEXTBO> selectProductByVersionIdGroup(@Param("versionId") String versionId, @Param("type") String type, @Param("isDel") int isDel);

    /**
     * @param versionId 版本id
     * @param isDel 是否删除
     * @return
     */
    List<PriceValueCastDecisionAllOrgEXTBO> selectWPProductOrgAndByBuildOrgVersionId(@Param("versionId")String versionId, @Param("isDel")int isDel);

	List<String> selectBuildListByVersionId(@Param("versionId")String versionId,@Param("isDel") int isDel);
}
